home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / c / bc_ti.zip / TI720.ASC < prev    next >
Text File  |  1992-02-25  |  4KB  |  199 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.   PRODUCT  :  Borland C++                            NUMBER  :  720
  9.   VERSION  :  2.0
  10.        OS  :  DOS
  11.      DATE  :  February 25, 1992                        PAGE  :  1/3
  12.  
  13.     TITLE  :  Printing a Graphics Screen to an Epson Printer
  14.  
  15.  
  16.  
  17.  
  18.   /************************************************************
  19.  
  20.    Name           PrintImage
  21.  
  22.    Description    Prints an image to an Epson compatible printer,
  23.                   ala GetImage and PutImage.
  24.  
  25.    Syntax         printimage(int x1, int y1, int x2, int y2);
  26.  
  27.   ************************************************************/
  28.  
  29.   #include <graphics.h>
  30.   #include <stdio.h>
  31.   #include <io.h>
  32.  
  33.   #define         ESC             '\x1B'
  34.   #define         LPT1            0
  35.   #define         LPT2            1
  36.   #define         prn_putc(x)     biosprint(0,(x),LPT1)
  37.  
  38.   /*
  39.       Sets Epson printer to bit image mode.
  40.       N is the number of bytes to print.
  41.   */
  42.   static void bitImage(int N)
  43.   {
  44.       register int        n1, n2;
  45.  
  46.       n2 = N >> 8;
  47.       n1 = N - (n2 << 8);
  48.  
  49.       prn_putc(ESC);
  50.           prn_putc('*');
  51.           prn_putc(4); /* K=standard density,
  52.                           L=double density,
  53.                           Y=dbl speed + dbl density,
  54.                           Z=quad density */
  55.       prn_putc(n1);
  56.       prn_putc(n2);
  57.   }
  58.  
  59.   /*
  60.       Get pixels from the screen and convert them to
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.   PRODUCT  :  Borland C++                            NUMBER  :  720
  75.   VERSION  :  2.0
  76.        OS  :  DOS
  77.      DATE  :  February 25, 1992                        PAGE  :  2/3
  78.  
  79.     TITLE  :  Printing a Graphics Screen to an Epson Printer
  80.  
  81.  
  82.  
  83.  
  84.       the printer's pin order.
  85.   */
  86.   static unsigned char getScrBits(int x, int y)
  87.   {
  88.       unsigned char firePins;
  89.  
  90.       firePins  = (getpixel(x, y++)==0)? 0: 0x80;
  91.       firePins |= (getpixel(x, y++)==0)? 0: 0x40;
  92.       firePins |= (getpixel(x, y++)==0)? 0: 0x20;
  93.       firePins |= (getpixel(x, y++)==0)? 0: 0x10;
  94.       firePins |= (getpixel(x, y++)==0)? 0: 0x08;
  95.       firePins |= (getpixel(x, y++)==0)? 0: 0x04;
  96.       firePins |= (getpixel(x, y++)==0)? 0: 0x02;
  97.       firePins |= (getpixel(x, y  )==0)? 0: 0x01;
  98.  
  99.       return      firePins;
  100.   }
  101.  
  102.   /*
  103.   Prints the image
  104.   */
  105.  
  106.   int printimage(int x1, int y1, int x2, int y2)
  107.   {
  108.       int         x, y, width, height;
  109.  
  110.       width  = x2-x1;
  111.       height = y2-y1;
  112.  
  113.       for (y=0; y<height; y+=8)
  114.       {
  115.           /*  Initialize line spacing to 7/72" */
  116.           prn_putc(ESC); prn_putc('1');
  117.  
  118.           bitImage(width);
  119.  
  120.           for (x=0; x<width; x++)
  121.               prn_putc(getScrBits(x,y));
  122.  
  123.           prn_putc('\n');
  124.       }
  125.       return      0;
  126.   }
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.   PRODUCT  :  Borland C++                            NUMBER  :  720
  141.   VERSION  :  2.0
  142.        OS  :  DOS
  143.      DATE  :  February 25, 1992                        PAGE  :  3/3
  144.  
  145.     TITLE  :  Printing a Graphics Screen to an Epson Printer
  146.  
  147.  
  148.  
  149.  
  150.   /*
  151.   Initialize graphics screen
  152.   */
  153.  
  154.   void InitGraf(int *hor, int *ver)
  155.   {
  156.           int gmode, i;
  157.           int gdriver = DETECT;
  158.           struct viewporttype vp;
  159.  
  160.           initgraph(&gdriver, &gmode, "");
  161.           getviewsettings( &vp );
  162.           *hor = (vp.right - vp.left);
  163.           *ver = (vp.bottom - vp.top);
  164.           for (i=0; i<(*hor); i+=10) line(i,0,i,*ver);
  165.           for (i=0; i<(*ver); i+=10) line(0,i,*hor,i);
  166.   }
  167.  
  168.   main()
  169.   {
  170.     int h, v;
  171.  
  172.     InitGraf(&h,&v);
  173.  
  174.     printimage(0,0,h,v);
  175.  
  176.     closegraph();
  177.     return 0;
  178.   }
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.